package org.demo.szml.userservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.demo.szml.userservice.controller.dto.*;
import org.demo.szml.userservice.service.result.UserInfoHandleResult;
import org.demo.szml.userservice.service.result.UserLoginHandleResult;
import org.demo.szml.userservice.service.result.UserModifyInfoHandleResult;
import org.demo.szml.userservice.service.result.UserRegisterHandleResult;
import org.springframework.stereotype.Service;

import javax.validation.Valid;

/**
 * @description: 用户服务接口
 * @date: 2025/6/12 22:25
 * @version: 1.0
 */
public interface IUserService {
    /**
     * 注册用户处理
     * @param registerDTO 注册信息
     * @return 注册的处理结果
     */
    UserRegisterHandleResult register(UserRegisterDTO registerDTO);

    /** 处理用户登录
     * @param userLoginDTO 登录所需信息
     * @return 登录处理结果
     */
    UserLoginHandleResult login(UserLoginDTO userLoginDTO);

    /** 通过userId获取合法权限下的用户信息
     * @param selectDTO 查询信息
     * @return 信息处理结果
     */
    UserInfoHandleResult selectUserById(UserSelectDTO selectDTO);

    /** 分页获取合法权限下的用户信息
     * @param selectDTO 查询信息
     * @return 信息处理结果
     */
    Page<UserInfoHandleResult> pageUsers(UserSelectDTO selectDTO);

    /** 修改用户信息
     * @param modifyInfo 修改信息
     * @return 信息处理结果
     */
    UserModifyInfoHandleResult modifyUserInfo(UserModifyInfoDTO modifyInfo);

    /** 修改用户密码
     * @param resetPwdDTO 修改密码信息
     * @return 信息处理结果
     */
    UserModifyInfoHandleResult resetPassword(UserResetPwdDTO resetPwdDTO);

    /** 重新绑定用户角色
     * @param rebindDTO 重新绑定信息
     * @return 信息处理结果
     */
    UserModifyInfoHandleResult rebindRole(UserRebindDTO rebindDTO);
}
